24、Durable Execution — 让长任务可暂停、可恢复
把任务写进 JSON 文件不等于持久化执行。可靠的长任务需要保存状态、输入、输出和下一步,并能在进程崩溃后恢复,而不是从头重跑。
检查点
每个步骤完成后保存不可变事件或版本化快照:
json
{
"run_id": "run_123",
"step": "retrieve",
"status": "completed",
"input_hash": "...",
"output_ref": "object://results/123",
"attempt": 1,
"updated_at": "2026-10-17T10:00:00Z"
}恢复时只重放未完成步骤。外部副作用必须使用幂等键,例如 run_id + step + input_hash,避免网络重试导致重复发邮件、扣款或写入数据。
暂停与人工接管
暂停应该是显式状态:waiting_for_input、waiting_for_approval 或 paused。恢复请求要携带版本号,防止用户确认旧计划后覆盖新状态。取消也要可传播到模型请求、工具进程和队列。
何时需要它
短请求可以使用会话内循环;跨分钟、跨进程、需要审批或包含外部副作用的任务才需要 durable execution。LangGraph 将 durable execution、interrupt 和 memory 作为一组基础能力,适合作为进一步学习的参照。LangGraph durable execution
练习
让一个三步任务在第二步中途强制退出进程,重新启动后从检查点继续;重复提交恢复请求,确认每个副作用只执行一次。
评论
正在加载评论…